package org.japo.java.swing.igu;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.Image;
import java.net.URL;
import javafx.scene.control.RadioButton;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JSlider;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import org.japo.java.swing.beans.PanelFondo;
import org.japo.java.swing.listeners.GEA;
import org.japo.java.swing.listeners.GEC;

public class IGU extends JFrame {

    //Componentes del panel principal
    private JLabel lblFrente;
    private JLabel lblFondo;
    private JSlider sldColor;
    private JRadioButton rbtFrente;
    private JRadioButton rbtFondo;

    //Valores de la fuente
    Font f = new Font("Calibri", Font.BOLD + Font.ITALIC, 16);

    // Recurso con la imagen de forndo del panel
    private final String RES_PKG = "/org/japo/java/resources/img";
    private final String RES_IMG = "fondo.jpg";
    private final String RECURSO = RES_PKG + "/" + RES_IMG;

    //Configurar Slider
    private final int COLOR_MINIMO = 0;
    private final int COLOR_MAXIMO = 255;
    private final int PASO_MENOR = 5;
    private final int PASO_MAYOR = 50;
    private final int VALOR_INICIO = 0;
    
    // Registro de colores
    private int colorFrente = VALOR_INICIO;
    private int colorFondo = VALOR_INICIO;

    public IGU() throws HeadlessException {
        iniciarComponentes();

    }

    private void iniciarComponentes() {
        // Borde principal
        Border brdPrincipal = new EmptyBorder(10, 10, 10, 10);
//        Border border = LineBorder.createGrayLineBorder();
        Border border = new BevelBorder(BevelBorder.RAISED);
        
        URL urlImagen = getClass().getResource(RECURSO);
        Image im = new ImageIcon(urlImagen).getImage();
        
        
       

        JPanel pnlPrincipal = new PanelFondo(im);
        pnlPrincipal.setLayout(new GridLayout(2, 1));
        pnlPrincipal.setBorder(brdPrincipal);

        //Gestor de eventos de cambio
        GEC gec = new GEC(this);

        //Dimensiones
        Dimension dimRbt = new Dimension(120, 30);
        Dimension dimSlider = new Dimension(300, 70);

        //Slider
        sldColor = new JSlider();
        sldColor.setMinimum(COLOR_MINIMO);
        sldColor.setMaximum(COLOR_MAXIMO);
        sldColor.setValue(colorFrente);
        sldColor.setFont(f);
        sldColor.setPaintLabels(true);
        sldColor.setPaintTicks(true);
        sldColor.setMinorTickSpacing(PASO_MENOR);
        sldColor.setMajorTickSpacing(PASO_MAYOR);
        sldColor.addChangeListener(gec);
        sldColor.setOpaque(false);
        sldColor.setSize(dimSlider);
        sldColor.setLocation(10, 10);
        pnlPrincipal.add(sldColor);

        //Panel INFERIOR
        JPanel pnlInferior = new JPanel();
        pnlPrincipal.add(pnlInferior);
        

        //Gestor de eventos de accion
        GEA gea = new GEA(this);

        //Radiobutton FRENTE
        rbtFrente = new JRadioButton();
        rbtFrente.setPreferredSize(dimRbt);
        rbtFrente.setText("FRENTE");
        rbtFrente.setFont(f);
        rbtFrente.setLocation(10, 60);
        rbtFrente.addActionListener(gea);
        rbtFrente.setSelected(true);
        pnlInferior.add(rbtFrente);

        //Etiqueta frente con cambio de color
        lblFrente = new JLabel();
        lblFrente.setPreferredSize(new Dimension(30, 30));
        lblFrente.setBackground(new Color(VALOR_INICIO, VALOR_INICIO, VALOR_INICIO));
        lblFrente.setBorder(border);
        lblFrente.setOpaque(true);
        pnlInferior.add(lblFrente);

        //Radiobutton FONDO
        rbtFondo = new JRadioButton();
        rbtFondo.setPreferredSize(dimRbt);
        rbtFondo.setText("FONDO");
        rbtFondo.setFont(f);
        rbtFondo.setLocation(10, 100);
        rbtFondo.addActionListener(gea);
        pnlInferior.add(rbtFondo);

        //Etiqueta frente con cambio de color
        lblFondo = new JLabel();
        lblFondo.setPreferredSize(new Dimension(30, 30));
        lblFondo.setBackground(new Color(VALOR_INICIO, VALOR_INICIO, VALOR_INICIO));
        lblFondo.setBorder(border);
        lblFondo.setOpaque(true);
        pnlInferior.add(lblFondo);

        //Grupo Radiobuttons
        ButtonGroup bg = new ButtonGroup();
        bg.add(rbtFrente);
        bg.add(rbtFondo);

        // Ventana principal
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Spinner y RadioButton");
        setContentPane(pnlPrincipal);
        setResizable(false);
        setSize(300, 210);
        setLocationRelativeTo(null);
    }

    public void procesarCambioColor() {
        int color;
//        int memoColorFrente;
//        int memoColorFondo;

        if (rbtFondo.isSelected()) {
            
            color = sldColor.getValue();
            Color colorFondo = new Color(color, color, color);
            lblFondo.setBackground(colorFondo);

        } else {
            color = sldColor.getValue();
            Color colorFondo = new Color(color, color, color);
            lblFrente.setBackground(colorFondo);
        }
    }

    public void procesarFrenteFondo() {
        if (rbtFrente.isSelected()) {
            colorFondo = sldColor.getValue();
            sldColor.setValue(colorFrente);
        } else {
            colorFrente = sldColor.getValue();
            sldColor.setValue(colorFondo);
        }
    }
    
    public void pruebaCommit(){
        //prueba para hacer commit con Tortoise
    }
}
